home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FishMarket 1.0
/
FishMarket v1.0.iso
/
fishies
/
151-175
/
disk_170
/
surf
/
src
/
mouse.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-05-06
|
2KB
|
119 lines
#include "scrnio.ih"
#ifdef MANX
#include <functions.h>
#endif
#include "scrnio.h"
#include "mytypes.h"
#include "bezpt.h"
#include "control.h"
static bool buttondown; /* is left button down */
static short mousex, mousey;
static bool isleftbut; /* left button or pseudo middle button */
void HandleTicks(mesg)
struct IntuiMessage *mesg;
{
int x, y;
x = CntrX(mesg->MouseX);
y = CntrY(mesg->MouseY);
if(!buttondown || (mousex == x && mousey == y )){
return;
}
mousex = x;
mousey = y;
switch( CurMode ) {
case DRAWPOLY:
EditBezPt( mousex, mousey);
break;
case FITBEZIER:
/*
* need to select between the two
*/
if( isleftbut ) {
EditControl0(mousex, mousey);
}
else {
EditControl1(mousex, mousey);
}
break;
default:
break;
}
}
void HandleMButtons(mesg)
struct IntuiMessage *mesg;
{
long leftdist, rightdist;
long tx, ty;
mousex = CntrX(mesg->MouseX);
mousey = CntrY(mesg->MouseY);
switch( mesg->Code) {
case SELECTDOWN:
buttondown = true; /* down */
switch( CurMode ) {
case DRAWPOLY:
InitBezPt( mousex, mousey);
if( GetNumSegs() == 0 ) {
InitBezPt( mousex, mousey );
}
break;
case FITBEZIER:
tx = mousex - Cntrl1X(GetCurSeg());
ty = mousey - Cntrl1Y(GetCurSeg());
leftdist = tx *tx + ty * ty;
tx = mousex - Cntrl2X(GetCurSeg());
ty = mousey - Cntrl2Y(GetCurSeg());
rightdist = tx *tx + ty * ty;
if( isleftbut = (leftdist <= rightdist) ) {
EditControl0( mousex, mousey );
}
else {
EditControl1( mousex, mousey );
}
break;
default:
break;
}
break;
case SELECTUP:
buttondown = false; /* up */
break;
case MENUUP:
if( CurMode == FITBEZIER ) {
DrawControl0();
DrawControl1();
NextSeg();
DrawControl0();
DrawControl1();
}
break;
default:
break;
}
}